/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.edu.pucp.Envios.Controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
import pe.edu.pucp.Envios.DAO.VueloDAO;
import pe.edu.pucp.Envios.Vista.VuelosGUI;
import pe.edu.pucp.Modelo.Aeropuerto;
import pe.edu.pucp.Modelo.Ciudad;
import pe.edu.pucp.Modelo.Configuracion;
import pe.edu.pucp.Modelo.Continente;
import pe.edu.pucp.Modelo.Pais;
import pe.edu.pucp.Modelo.Permiso;
import pe.edu.pucp.Modelo.Usuario;

/**
 *
 * @author katy
 */
public class VueloControladorEnvios {
    
    private VuelosGUI view ;
    private VueloDAO dao;
    private Usuario user;
    private Configuracion conf;
    private ArrayList<Continente> lstContinentes;
    private ArrayList<Pais> lstPais;
    private ArrayList<Ciudad> lstCiudades;
    private ArrayList<Aeropuerto> lstAeropuerto;
    
    public VueloControladorEnvios(VueloDAO dao, VuelosGUI v, Usuario user) {
        this.view = v;
        this.dao = dao;
        this.user = user;       
        this.conf = dao.ObtenerConf();
        view.mostrarPermisos(new  ArrayList<Permiso>(user.getPerfil().getPermisos()));
        
        loadCombos();
                
        lstAeropuerto = dao.ListarAeropuertos(null, null, null, user);
        view.llenaGrilla(lstAeropuerto, user, conf);
        view.addBuscarButtonListener(new BuscarButtonListener());
        view.addLimpiarButtonListener(new LimpiarButtonListener());        
        view.addCambiarPais(new CambiarLstCiudadListener());
        view.addCambiarContinente(new CambiarLstPaisListener());
    }
    
    private void loadCombos() {
        llenarContinentes();
        llenarPaises(lstContinentes.get(view.getContinente()));
        llenarCiudades(lstPais.get(view.getPais()));  
    }
    public void llenarContinentes(){
        lstContinentes = dao.listarContinentes();
        view.llenaContinentes(lstContinentes);
    }
    public void llenarPaises(Continente continente){ //lstContinente().get(genear)
        lstPais = dao.listarPaises(continente);
        view.llenaPaises(lstPais);
    }
    public void llenarCiudades(Pais pais){
        lstCiudades = dao.listarCiudades(pais);
        view.llenaCiudades(lstCiudades);
    }
    class BuscarButtonListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {           
            lstAeropuerto = dao.ListarAeropuertos(lstContinentes.get(view.getContinente()), lstPais.get(view.getPais()), lstCiudades.get(view.getCiudad()), user);
            view.llenaGrilla(lstAeropuerto, user, conf);
        }
  
    }
    
    class LimpiarButtonListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {            
            lstAeropuerto = dao.ListarAeropuertos(null, null, null, user);
            view.llenaGrilla(lstAeropuerto, user, conf);
        }
  
    }
    class CambiarLstPaisListener implements ItemListener{
        @Override
        public void itemStateChanged(ItemEvent e) {
            if (e.getStateChange()== ItemEvent.SELECTED){
                llenarPaises(lstContinentes.get(view.getContinente()));
            }
        }        
    }  
    class CambiarLstCiudadListener implements ItemListener{
        @Override
        public void itemStateChanged(ItemEvent e) {
            if (e.getStateChange()== ItemEvent.SELECTED){
                llenarCiudades(lstPais.get(view.getPais()));
            }
        }        
    }  
    
}
